Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
Следующий макрос VBA показывает создание узловой опоры с нелинейностью «Частичная активность». Исходный код затем находится в разделе Загрузки.
Option Explicit
' --------------------------Sub SetNSupports()' --------------------------Dim model As RFEM5.modelDim data As IModelDataDim support(0) As RFEM5.NodalSupportDim ISup As RFEM5.INodalSupportDim ISupPA как RFEM5.IPartialActivityDim nlPA как частичная активность
e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source
End Sub
Um ein nicht lineares Element wie ein Stabendgelenk mit Diagramm oder Ausfall anlegen zu können, muss zunächst das Stabendgelenk angelegt werden. Wenn RFEM das Stabendgelenk kennt, kann dieses über die Schnittstelle IMemberEndRelease geholt werden. Diese Schnittstelle verfügt dann über die Methoden GetData() und SetData(). Beide Methoden sind in der Lage sowohl die einfachen Stabendgelenkdaten vom Typ MemberEndRelease als auch die Daten einer Nichtlinearität auszulesen bzw. zu schreiben.
Im folgenden Beispiel wird in Stabendgelenk zunächst für die x-Richtung ein Gelenk aktiviert und dann als Nichtlinearität in x-Richtung der Typ WorkingDiagramType eingestellt. Nachdem diese Daten mithilfe eines Prepare-Finish-Modification-Blocks an RFEM übergeben wurden, legt dieses intern die Nichtlinearität an. Um diese mit Daten zu füllen, werden zunächst die vorhandenen Daten über GetData() von der Schnittstelle des Stabendgelenks geholt.
Nachdem die Daten (NonlinearityDiagram) ausgefüllt wurden, werde diese wieder mit SetData() übergeben:
Sub SetNLDiagram()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")On Error GoTo eDim iApp As RFEM5.ApplicationSet iApp = model.GetApplicationiApp.LockLicenseiApp.ShowDim iModelData As RFEM5.iModelDataSet iModelData = model.GetModelData' modify member end release' set nonlinearity "Diagram" for x translationDim iMemHing As RFEM5.IMemberHingeSet iMemHing = iModelData.GetMemberHinge(1, AtNo)Dim memHing As RFEM5.MemberHingememHing = iMemHing.GetData()memHing.TranslationalConstantX = 0memHing.TranslationalNonlinearityX = WorkingDiagramType' Set new dataiModelData.PrepareModificationiMemHing.SetData memHingiModelData.FinishModification' create diagramDim tbl1() As DoubleReDim tbl1(1, 1)tbl1(0, 0) = 0 ' u-xtbl1(0, 1) = 0 ' P-xtbl1(1, 0) = 0.02 ' u-x (mm)tbl1(1, 1) = 2000 ' P-x (N)Dim nldHing As RFEM5.NonlinearityDiagramnldHing.ForceType = StiffnessDiagramForceType.NoneStiffnessForcenldHing.PositiveZoneType = DiagramAfterLastStepType.TearingDiagramTypenldHing.PositiveZone = tbl1nldHing.Symmetric = TrueDim iNldiag As RFEM5.INonlinearityDiagramSet iNldiag = iMemHing.GetNonlinearity(AlongAxisX)' Set new dataiModelData.PrepareModificationiNldiag.SetData nldHingiModelData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Die Vorgehensweise ist für Knotenlager und andere Nichtlinearitäten analog.
Поворот узловой опоры определяется посредством пользовательской системы координат. В следующем примере узловая опора повернута на 45 ° вокруг оси z. Нет необходимости определять новую систему координат через узлы. В этом случае достаточно использовать параметр RotatedSystemType, который позволяет выполнить пространственный поворот опоры с помощью трех поворотов вокруг оси x, y и z. Поворот задается в радианах:
Sub test_nodal_support ()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e' получить интерфейс данных моделиDim iModData As RFEM5.IModelData2Set iModData = iMod.GetModelData' получить интерфейс узловой опорыРазмеры как в RFEM5.INodalSupportУстановите iNs = iModData.GetNodalSupport (1, AtNo)' получить данные узловой опорыРазмеры как в RFEM5.NodalSupportns = iNs.GetData' изменить данныеns.ReferenceSystem = UserDefinedSystemTypens.UserDefinedReferenceSystem.Axis1 = AxisXns.UserDefinedReferenceSystem.Axis2 = AxisYns.UserDefinedReferenceSystem.Type = RotatedSystemTypens.UserDefinedReferenceSystem.RotationAngles.X = 0ns.UserDefinedReferenceSystem.RotationAngles.Y = 0ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3,14159265359/180' задать данные узловой опорыiModData.PrepareModificationiNs.SetData nsiModData.FinishModificatione:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Программа берет существующую узловую опору из текущей открытой модели и модифицирует ее. Поскольку пользовательская система координат не является прямой частью интерфейса INodalSupport узловой опоры, то поворот, конечно же, можно передать при создании узловой опоры.
Чтобы можно было присвоить стержню эксцентриситет, обычно необходимо создать его перед самой настройкой стержня.
Другой подход затем показан в следующем примере, Другой подход затем показан в следующем примере, где сначала создается эксцентриситет, который потом назначается уже существующему стержню посредством его интерфейса:
'---------------------Sub SetEccentricity()'---------------------Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim iModData As RFEM5.iModelDataSet iModData = model.GetModelData' create eccentricityDim eccens(0 To 0) As RFEM5.MemberEccentricityeccens(0).No = 1eccens(0).Comment = "test eccentricity"eccens(0).ReferenceSystem = LocalSystemTypeeccens(0).Start.X = 0eccens(0).Start.Y = 0eccens(0).Start.Z = 0eccens(0).End.X = 0eccens(0).End.Y = 0eccens(0).End.Z = 0eccens(0).HingeAtEndNode = Falseeccens(0).HingeAtStartNode = Falseeccens(0).HorizontalAlignment = Middleeccens(0).VerticalAlignment = Bottomeccens(0).TransverseOffset = Trueeccens(0).ReferenceObjectNo = 2eccens(0).ReferenceObjectType = MemberObjecteccens(0).HorizontalAxisOffset = Middleeccens(0).VerticalAxisOffset = Topeccens(0).StartAdjoiningMembersOffset = Falseeccens(0).EndAdjoiningMembersOffset = FalseiModData.PrepareModificationiModData.SetMemberEccentricities eccensiModData.FinishModification' add eccentricity to memberDim iMem As RFEM5.IMemberSet iMem = iModData.GetMember(1, AtNo)Dim mem As RFEM5.Membermem = iMem.GetDatamem.EccentricityNo = 1iModData.PrepareModificationiMem.SetData memiModData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Поскольку эксцентриситеты стержней можно передавать лишь в виде поля, было в данных целях создано поле только с одним элементом. На прилагаемом изображении перечисляются эти элементы всегда со ссылкой на соответствующие графические элементы.
Трение - это тип нелинейности, который можно изменить только через интерфейс к шарниру стержня.
Для этого сначала необходимо создать шарнир стержня, если он еще не создан. Затем применим к шарниру стержня интерфейс IMemberHinge, а к нелинейности интерфейс IFriction. После того уже можно для изменения требуемых данных (в данном случае это запись Friction) использовать методы GetData и SetData:
Sub SetMemberHingeFriction() Dim model As RFEM5.model Set model = GetObject(, "RFEM5.Model") model.GetApplication.LockLicense On Error GoTo e Dim data As IModelData Set data = model.GetModelData Dim hinge(0 To 0) As RFEM5.MemberHinge hinge(0).No = 1 hinge(0).RotationalConstantX = 1 hinge(0).RotationalConstantY = 2 hinge(0).RotationalConstantZ = 3 hinge(0).TranslationalConstantX = 4 hinge(0).TranslationalConstantY = 5 hinge(0).TranslationalConstantZ = 6 hinge(0).Comment = "Member Hinge 1" hinge(0).TranslationalNonlinearityX = FrictionAType data.PrepareModification data.SetMemberHinges hinge data.FinishModification ' get interface for member hinge Dim imemhing As IMemberHinge Set imemhing = data.GetMemberHinge(1, AtNo) ' get interface for nonlinearity "friction" Dim iFric As IFriction Set iFric = imemhing.GetNonlinearity(AlongAxisX) ' get friction data Dim fric As Friction fric = iFric.GetData fric.Coefficient1 = 0.3 ' set friction data data.PrepareModification iFric.SetData fric data.FinishModification e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source Set data = Nothing model.GetApplication.UnlockLicense Set model = NothingEnd Sub
В случае трения Vy + Vz, используется для настройки второго коэффициента команда Coefficient2. Постоянная пружины в диалоговом окне «Трение» затем определяется с помощью продольной пружины шарнира стержня. В данном конкретном случае это запись TranslationalConstantX , которая управляет настройками для направления x (см. Рисунок 01).
Способ создания узловой опоры с диаграммой нелинейности показан в следующем макросе VBA. Исходный код затем находится в разделе Загрузки.
Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim data As IModelDataSet data = model.GetModelDataРазмеры стержней (0) Как в RFEM5.Member стержней (0) .No = 3стержней (0) .LineNo = 12члены (0) .Type = ResultBeamType стержни (0) .StartCrossSectionNo = 1стержни (0) .EndCrossSectionNo = 1 стержни (0) .Comment = "результирующая балка 1"data.PrepareModificationэлементы data.SetMembersdata.FinishModification
Dim iMem As IMemberУстановите iMem = data.GetMember (3, AtNo) Dim iRMem как IResultBeamУстановите iRMem = iMem.GetExtraData Dim RMem как ResultBeamRMem = iRMem.GetData RMem.IncludeSurfaces = "1"RMem.IncludeSolids = "все" RMem.Integrate = WithinCuboidGeneral Дим параметры (от 0 до 3) как двойные RMem.Parameters = параметрыRMem.Parameters (0) = 0,5RMem.Parameters (1) = 0,5RMem.Parameters (2) = 0,1RMem.Parameters (3) = 0,1 data.PrepareModificationiRMem.SetData RMemdata.FinishModification
Чтобы изменить существующий элемент, вам нужно получить интерфейс для соответствующего элемента, в данном случае на примере стержня:
Dim iModel As RSTAB8.modelУстановите iModel = GetObject (, "RSTAB8.Model") iModel.GetApplication.LockLicense Dim iModData As IModelDataУстановите iModData = iModel.GetModelData Dim iMem As RSTAB8.IMemberSet iMem = iModData.GetMember(1, AtNo)
Используйте этот код, чтобы получить интерфейс для стержня 1, который уже должен быть создан. Затем можно использовать метод интерфейса .GetData () для получения данных об элементах.
Если вы хотите изменить данные (например, поворот стержня), вы можете впоследствии передать их в программу в блоке Prepare-/FinishModification с помощью метода .SetData ().
Dim mem As RSTAB8.Membermem = iMem.GetData mem.Rotation.Angle = 0,5mem.Rotation.Type = RSTAB8.Angle iModData.PrepareModificationiMem.SetData memiModData.FinishModification